package com.hsqn.entity;

import jakarta.validation.constraints.Digits;
import jakarta.validation.constraints.NotNull;
import jakarta.validation.constraints.Size;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.math.BigDecimal;
import java.time.LocalDateTime;

@Data
@NoArgsConstructor
@AllArgsConstructor
public class ConsumptionRecord {
    /** 消费记录ID（主键自增） */
//    @TableId(type = IdType.AUTO)
    private Long id;

    /** 消费记录编号（唯一，如：CONSUME20251106123456789） */
    @NotNull(message = "消费记录编号不能为空")
    private String recordNo;

    /** 关联订单ID（meal_order.id） */
    @NotNull(message = "关联订单ID不能为空")
    private Long orderId;

    /** 关联订单编号（meal_order.order_no） */
    @NotNull(message = "关联订单编号不能为空")
    private String orderNo;

    /** 消费老人ID（订单所属老人） */
    @NotNull(message = "消费老人ID不能为空")
    private Long elderlyId;

    /** 消费类型（1-订餐支付，2-退款） */
    @NotNull(message = "消费类型不能为空")
    private Integer consumptionType;

    /** 消费金额（正数=支付，负数=退款，如：19.90=支付19.9元，-19.90=退款19.9元） */
    @NotNull(message = "消费金额不能为空")
    @Digits(integer = 10, fraction = 2, message = "金额格式错误（最多10位整数，2位小数）")
    private BigDecimal amount;

    /** 支付方式（1-微信，2-支付宝，3-现金，4-余额） */
    private Integer paymentMethod;

    /** 支付状态（1-支付成功，2-退款成功） */
    @NotNull(message = "支付状态不能为空")
    private Integer paymentStatus;

    /** 第三方支付流水号（如微信支付的transaction_id） */
    @Size(max = 64, message = "第三方流水号不能超过64字符")
    private String transactionNo;

    /** 消费时间（默认当前时间） */
    private LocalDateTime consumptionTime;

    /** 备注（如："2025-11-06午餐支付"、"订单取消退款（老人不在家）"） */
    @Size(max = 500, message = "备注不能超过500字符")
    private String remark;
}
